<?php
class GlobalAction extends Action{
	
	function _initialize(){
    	//header发送头信息，页面编码为utf=8格式
		header("Content-Type:text/html; charset=utf-8");
		//判断是否开始了用户认证,C()是快速读取配置文件的方法，MODEL_NAME是当前模块的名称，
		//通过in_array函数检测当前调用的模块是否在不需要验证的验块中，如果是的话，取反，不进行验证。
		if(C('USER_AUTH_ON') && !in_array(MODULE_NAME,explode(',',C('NOT_AUTH_MODULE')))){
	        //调用thinkphp自带的RBAC类
			import('ORG.Util.RBAC');
			//通过RBAC类中的AccessDecision获取与权限相关的信息,如果没有获取到则执行以下部份
			if(!RBAC::AccessDecision()){
			//获取SESSION中的用户标识号，如果没有则用户没有登陆
				if(!$_SESSION[C('USER_AUTH_KEY')] && !C('GUEST_AUTH_ON')){
					$this->assign('jumpUrl', PHP_FILE.C('USER_AUTH_GATEWAY'));
					$this->error('对不起，你没有登录！请重新登录');
				}
				//检测是否开始了游客认证方式
				if(C('GUEST_AUTH_ON')){
					$this->assign ('jumpUrl', PHP_FILE.C('USER_AUTH_GATEWAY'));
				}else{
					 if(!isset($_SESSION['_ACCESS_LIST'])){
						RBAC::saveAccessList(C('GUEST_AUTH_ID'));
					 }
				}
				//通过$this->error方法弹出错误_VALID_ACCESS_为THINKPHP已设定好的与访问//控制有关的错误提示.采用L()方式来进行读取。
//				$this->error(L('_VALID_ACCESS_'));
			}
		}
	}
	/*
		@ 模块 1产品 2新闻
		@ 栏目ID
		@ 检测操作 allowadd/allowedit/allowedit
	
	*/
	protected function _checkCategory($module,$cid,$action){
		$map['module']=$module;
		$map['id']=$cid;
		$groupId=$this->groupId;
			if ($groupId!=1){//非超级管理组则检测权限
				$security=D('Category')->find($map);
				$result=$security[$action];
				if ($result!="") {//栏目权限非空，则检测权限
					if(!in_array($groupId,array($result))){
							return false;
						}else{
							return true;
					}
				}else {
					return true;
				}
			}else {
				return true;
			}
	}
	
	/*
		@ 公共操作
		@ 删除/锁定/推荐/置顶/审核/移动
		@ $dbclass 指定操作数据库默认为 $this->name		
	*/
	public function _subAction($dbclass="")	{
		$getid=$_REQUEST['id'];
		if (!$getid) $this->error('未选择记录') ;
		$getids=implode(',',$getid);
		//如果GETID为数组则需要判断是否有批量操作权限
		if (is_array($getid)) {
			$security=D('Usergroup')->find('id='.$this->groupId);
				if (!$security) $this->error('未获取用户组ID权限，请联系系统管理员');//未获取用户组ID权限，请联系系统管理员
				$allowbat=intval($security['allowbat']);
					if($allowbat!==1)$this->error('当前用户没有批量操作权限');//当前用户没有批量操作权限
		}
		$id = is_array($getid)?$getids:$getid;
		$act =$_REQUEST['act'];
		$category =$_REQUEST['category'];
		//过滤操作类型
		if (!$act) $this->error('操作类型必须选择');//操作类型必须选择
		$allowact=array('good','ugood','top','utop','ischecked','uischecked','remove','delete');
		if (!in_array($act,$allowact))$this->error('未知操作');//未知操作
		if (!$id) $this->error('ID丢失');
		$dbname=$dbclass==""?$this->name:$dbclass;
		$Category=D($dbname);
		switch ($act){
			case 'good':$Result=D($dbname)->execute('UPDATE __TABLE__ SET `isgood`=1 WHERE `id` IN ('.$id.')');$say='推荐成功';break;//推荐
			case 'ugood':$Result=D($dbname)->execute('UPDATE __TABLE__ SET `isgood`=0 WHERE `id` IN ('.$id.')');$say='取消推荐成功';break;//取消推荐
			case 'top':$Result=D($dbname)->execute('UPDATE __TABLE__ SET `istop`=1 WHERE `id` IN ('.$id.')');$say='置顶成功';break;//置顶
			case 'utop':$Result=D($dbname)->execute('UPDATE __TABLE__ SET `istop`=0 WHERE `id` IN ('.$id.')');$say='取消置顶成功';break;//取消置顶
			case 'ischecked':$Result=D($dbname)->execute('UPDATE __TABLE__ SET `ischecked`=0 WHERE `id` IN ('.$id.')');$say='审核成功';;break;//审核
			case 'uischecked':$Result=D($dbname)->execute('UPDATE __TABLE__ SET `ischecked`=1 WHERE `id` IN ('.$id.')');$say='取消审核成功';;break;//取消审核
			case 'remove':$Result=D($dbname)->execute('UPDATE __TABLE__ SET `cid`='.$category.' WHERE `id` IN ('.$id.')');$say='移动成功';;break;//移动
			case 'delete':$Result=D($dbname)->execute('DELETE FROM __TABLE__ where `id` IN ('.$id.')');$say='删除成功';;break;//删除
			default:$this->error(L('_OPERATION_WRONG_'));break;//未知操作类型
		}		
		if($Result===false){
			$this->error(L('_OPERATION_FAIL_'));
		}else{
			$this->assign('jumpUrl',__URL__/$dbname);
	        $this->success($say);
		}
		//$this->display('index');
		
	}
	/*
	@公共上传
	@模块
	@路径
	@是否生成缩略图
	*/
	public function _upload($module,$path,$thumb,$width,$height){
		$module=$module=""?'file':$module;//未知模块将存入file文件夹
		switch($module) {
            case 'article':$path=C(ATTACHDIR).'/article/'.$path.'/';break;
            case 'product':$path=C(ATTACHDIR).'/product/'.$path.'/';break;
            case 'link': $path=C(ATTACHDIR).'/logo/'.$path.'/';break;
            default:$path=C(ATTACHDIR).'/file/'.$path.'/';
        }
		if (!is_dir($path))	@mk_dir($path);    
		import("ORG.Net.UploadFile");
        $upload = new UploadFile();
		$upload->maxSize=C(ATTACHSIZE);
		$upload->allowExts=explode(',',strtolower(C(ATTACHEXT)));
		$upload->savePath=$path;
		$upload->saveRule='uniqid';
		isset($thumb)?$upload->thumb=$thumb:$upload->thumb=C(ATTACH);
		isset($width)?$upload->thumbMaxWidth=$width:$upload->thumbMaxWidth=C(THUMBMAXWIDTH);
		isset($height)?$upload->thumbMaxHeight=$height:$upload->thumbMaxHeight=C(THUMBMAXHEIGHT);
		$upload->thumbSuffix =C(THUMBSUFFIX); 
		//$upload->thumbMaxWidth =C(THUMBMAXWIDTH); 
		//$upload->thumbMaxHeight =C(THUMBMAXHEIGHT); 
        if(!$upload->upload()){
            //捕获上传异常
            return $this->error($upload->getErrorMsg());
        }else{
			//上传成功
			return $upload->getUploadFileInfo();
    	}
	}
	
}
?>